# 操作方法
# 函数 三大要素 =》 作用对象 参数 返回值 （都不一定有）

print("查找元素演示1")
# 查找元素：
# （1） str.find（查找字符串，开始下标，结束下标）
#        输出第一个元素所在下标
str = "Hello ! World ! My friend."
#      01234
print(str.find("!")) #从左向右 第一个下标
print(str.rfind("!")) #从右向左 第一个下标
print(str.find("!",7,21))
print(str.find("World"))

print("")

print("查找元素演示2")
# （2） str.index(查找字符串, 开始位置下标, 结束位置下标)
#       检测是否包含在这个字符串串中，在则返回开始的位置下标，不在报异常
str1 = "hello world and itcast and itheima and Python"
print(str1.index('and')) # 12
print(str1.index('and', 15, 30)) # 23
# print(str1.index('ands')) # 报错

# 注意点：
# rfind()： 和find()功能相同，但查找⽅方向为右侧开始。
# rindex()：和index()功能相同，但查找⽅方向为右侧开始。

print("")

print("统计次数演示")
# （3）统计次数： str.count(⼦子串串, 开始位置下标, 结束位置下标)
#       返回某个⼦子串串在字符串串中出现的次数
str2 = "hello world and itcast and itheima and Python"
print(str2.count('and')) # 3
print(str2.count('ands')) # 0
print(str2.count('and', 0, 20)) # 1

print("")

print("修改元素演示")
# （4）修改：str.replace(旧字符串，新字符串，替换次数)
#       不修改原有字符串
str3 = "hello world and itcast and itheima and Python"
str4 = str3.replace("and", "or",2)
print(str3)
print(str4)
# 可变数据  可以通过函数、操作等方法修改数据本身
# 不可变数据  无法通过后期数据修改数据本身（字符串） =》 用函数修改后会产生一个修改结果返回值

print("")

print("分隔符演示")
# （5）分割符号： str.split("分割符"，num)
#       num表示的是分割字符出现的次数，即将来返回数据个数为num+1个
str5 = "1 2 3"
str6 = str5.split(" ")
print(str5)
print(str6)

print("")

print("连接符演示")
# (6) 连接符号： str.join(连接符号)
#       转化为字符串形式，并以前面的连接符连接
str7 = "avc"
print("_".join(str7))

print("")

print("大写转换演示")
# (7) 第一个字符大写： str.capitalize()
#       只字符串串第⼀一个字符⼤大写，其他的字符全都小写
str8 = "hello world!"
print(str8.capitalize())

print("")

print("首字母大写演示")
# (8) 首字母大写： str.title()
#       将字符串串每个单词⾸首字⺟母转换成⼤大写
str8 = "hello world!"
print(str8.title())

print("")

print("大写转小写演示")
# (8) 全部大写转小写： str.lower()
#       将字符串中大写转小写
str9 = "HEllo woRld!"
print(str8.lower())

print("")

print("小写转大写演示")
# (8) 全部小写转大写： str.upper()
#      将字符串中小写转大写。
str9 = "HEllo woRld!"
print(str8.upper())

print("")

print("去空白字符演示")
# lstrip()：删除字符串串左侧空白字符
# rstrip()：删除字符串串右侧空白字符
# strip()：删除字符串串两侧空白字符
str10 = "  Hello World!  "
print(str10.lstrip())
print(str10.rstrip())
print(str10.strip())

print("")

print("对齐位置演示")
# str.ljust(长度, 填充字符)：左对齐,并用指定字符(默认空格)填充至对应长度
# str.rjust(长度, 填充字符)：右对齐,并用指定字符(默认空格)填充至对应长度
# str.center(长度, 填充字符)：居中对齐,并用指定字符(默认空格)填充至对应长度
str10 = "Hello"
print(str10.ljust(10, "*"))
print(str10.rjust(10, "*"))
print(str10.center(10, "*"))

print("")

print("判断演示")
# 注意：返回值都是布尔值
str11 = "hello world and itcast and itheima and Python "

print("1.startswith()")
# str.startswith(子串, 开始位置下标, 结束位置下标)
#   检查字符串是否是以指定子串串开头
#       如果设置开始和结束位置下标，则在指定范围内检查
print(str11.startswith('hello'))
print(str11.startswith('hello', 5, 20))
print("")

print("2.endswith()")
# str.endswith(子串, 开始位置下标, 结束位置下标)
#   检查字符串串是否是以指定⼦子串串结尾
#       如果设置开始和结束位置下标，则在指定范围内检查
print(str11.endswith('Python'))
print(str11.endswith('python'))
print(str11.endswith('Python', 2, 20))
print("")

print("3.isalpha()")
# str.isalpha():判断字符串至少有一个字符且所有字符都是字⺟
str12 = 'hello'
str13 = 'hello12345'
print(str12.isalpha())
print(str13.isalpha())
print("")

print("4.isdigit()")
# str.isdigit()：判断字符串都是数字
str14 = '12345'
str15 = 'a12345'
print(str14.isdigit())
print(str15.isdigit())
print("")

print("5.isalnum()")
# str.isalnum()：判断字符串是否只有数字和字母
str16 = 'aaa12345'
str17 = '12345-'
str18 = 'aaa'
print(str16.isalnum())
print(str17.isalnum())
print(str18.isalnum())
print("")

print("6.isspace()")
# str.isspace(): 判断字符串只有空白字符
str19 = "   "
str20 = " 1 2"
print(str19.isspace())
print(str20.isspace())
